import socketserver
 
class MyTCPHandler(socketserver.BaseRequestHandler):#自定义请求处理类，每个客户端的请求过来，都会实例它。MyTCPHandler
    def handle(self):#重写handle()
        var_temp = int(input("Input Var_temp:"))#输入Var_temp的值，来一个请求Var_temp值减一
        while True:
            try:
                self.data= self.request.recv(1024).strip()#每次从客户端最多接收1024个字节的信息
                if self.data == "get".encode(encoding='utf_8'):#如果收到的时get命令则返回Var_temp的值
                    print("{} wrote:".format(self.client_address[0]))#打印客户端的IP地址
                    print("current var_temp:",var_temp)#打印当前var_temp的值
                    if var_temp == 0:
                        print("over")#当var_temp的值为0时，返回"over"信息给客户端
                        self.request.send("over".encode(encoding='utf_8'))#以bit流的形式发送
                        break
                    self.request.send(str(var_temp).encode(encoding='utf_8'))#变成大写，传回给客户端。
                    var_temp = var_temp -1#更新Var_temp的值
            except ConnectionResetError as e:
                print('Error is: ',e)#客户端断开时抛出的异常
                break
 
if __name__== "__main__":
    HOST, PORT= "localhost",9999
    server= socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)
    server.serve_forever()